package com.treasure.service.task.config;

/**
 * @Description: 
 * @version 1.0 
 * @author panxinwen 2018/10/29 16:19
 * @Copyright © 2015 | 武汉京航科技有限公司 Email:19919866605@163.com
 * */


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import java.io.IOException;
import java.util.Properties;

/**
 * 配置任务调度中心
 * Created by Administrator on 2017/4/12.
 */
@Configuration
public class QuartzConfig {

    @Autowired
    private MyJobFactory myJobFactory;
//
//    @Bean
//    public Scheduler scheduler() throws IOException, SchedulerException {
//        SchedulerFactory schedulerFactory = new StdSchedulerFactory(quartzProperties());
//        Scheduler scheduler = schedulerFactory.getScheduler();
//        scheduler.start();
//        return scheduler;
//    }

    /**
     * 设置quartz属性
     * @throws IOException
     * 2016年10月8日下午2:39:05
     */
    public Properties quartzProperties() throws IOException {
        Properties prop = new Properties();
        prop.put("quartz.scheduler.instanceName", "ServerScheduler");
        prop.put("org.quartz.scheduler.instanceId", "AUTO");
        prop.put("org.quartz.scheduler.skipUpdateCheck", "true");
        prop.put("org.quartz.scheduler.instanceId", "NON_CLUSTERED");
        prop.put("org.quartz.scheduler.jobFactory.class", "org.quartz.simpl.SimpleJobFactory");
        prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
        prop.put("org.quartz.threadPool.threadCount", "5");
        prop.put("org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread", "true");
        return prop;
    }


    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() throws IOException {
        SchedulerFactoryBean factory = new SchedulerFactoryBean();

        factory.setOverwriteExistingJobs(true);

        // 延时启动
        factory.setStartupDelay(20);

        // 加载quartz数据源配置
        factory.setQuartzProperties(quartzProperties());

        // 自定义Job Factory，用于Spring注入
        factory.setJobFactory(myJobFactory);

        return factory;
    }


}
